//
// Created by ASUS on 2025/9/19.
//

#ifndef SERIALSCREENTASK_H
#define SERIALSCREENTASK_H

// 错误码和警告码枚举
typedef enum {
    SERIALSCREEN_OK = 0, // 无错误
    SERIALSCREEN_ERR_UNRECOGNIZED_VAR_OR_CMD = 1, // 未识别的变量或命令
    SERIALSCREEN_ERR_ASSIGN_FAILED = 2, // 赋值失败
    SERIALSCREEN_ERR_PARAM_COUNT = 3, // 参数数量错误
    SERIALSCREEN_ERR_PARAM_TYPE = 4, // 参数类型错误
    SERIALSCREEN_ERR_VAR_DEFINED = 5, // 变量已定义
    SERIALSCREEN_ERR_VAR_NAME_TOO_LONG = 6, // 变量名过长
    SERIALSCREEN_ERR_UNRECOGNIZED_SYMBOL = 7, // 未识别的符号
    SERIALSCREEN_ERR_MISSING_SYMBOL = 8, // 缺少符号
    SERIALSCREEN_ERR_MISSING_EXPR_IN_PAREN = 9, // 括号内缺少表达式
    SERIALSCREEN_ERR_TYPE = 10, // 类型错误
    SERIALSCREEN_ERR_DIV_ZERO_OR_CONST_OVERFLOW = 11, // 除零或常量溢出
    SERIALSCREEN_ERR_STRING_OP = 12, // 字符串操作错误
    SERIALSCREEN_ERR_SYS_MEM = 13, // 系统内存错误
    SERIALSCREEN_WARN_ASSIGN_OUT_OF_RANGE = 128, // 赋值超出范围
    SERIALSCREEN_WARN_PAGE_ID_INVALID = 129, // 页面ID无效
    SERIALSCREEN_WARN_WIDGET_ID_INVALID = 130, // 控件ID无效
    SERIALSCREEN_WARN_PARAM_OUT_OF_RANGE = 131, // 参数超出范围
    SERIALSCREEN_WARN_PLAY_FAILED = 132, // 播放失败
    SERIALSCREEN_WARN_COVX_TYPE_SAME = 133, // COVX类型相同
    SERIALSCREEN_WARN_CLICK_SELF = 134, // 点击自身
    SERIALSCREEN_WARN_CLICK_LOOP = 135, // 点击循环
    SERIALSCREEN_UNKNOWN = 0xFFFF // 未知错误
} SerialScreenErrCode_t;

// 当前错误码变量
extern SerialScreenErrCode_t SerialScreenErrCode;

// 指令封装函数声明
void SerialScreen_SetVar(const char *var, const char *value);

void SerialScreen_PageSwitch(const char *page);

void SerialScreen_GetVar(const char *var);

// 协议解析函数声明
void SerialScreen_Parse(const char *msg);

//定义任务
void SerialScreen_Task(void const *argument);

#endif //SERIALSCREENTASK_H
